// flow Mixed与Any：接收任意类型的数据定义
// mixed,any类型：所有类型的联合类型（number,boolean,string,any,undefined..）
/**
 * @flow
 */

//  支持所有的数据类型定义:string/number/boolean/null....
function fn(value: mixed) {
    return true
}
fn('str')
fn(100)
fn(true)

function fo(value: any) {
    return true
}
fo('str')
fo(10)
fo(false)
fo(null)

// 区别：any是弱类型，mixed是强类型
// 总结：any存在类型隐患的问题，推荐使用mixed
// mixed的value是不支持任何逻辑处理，因为类型未定义
function fn2(value: mixed) {
    // value.substr(1)
    // value * value
    // 所以参数value还是需要进行类型判断
    if (typeof value === 'string') {
        value.substr(1)
    }
    if (typeof value === 'number') {
        value * value
    }
}
fn2('str')
fn2(100)
fn2(true)

// any 参数value可以进行任何类型逻辑处理，存在类型隐患问题
function fo2(value: any) {
    value.substr(1)
    value * value
}
fo2('str')
fo2(10)
fo2(false)
fo2(null)